C++_MFC自定义消息的实现方法,一、概述:消息机制是windows
class CTestDlg : public CDialog { protected: …… // 生成的消息映射函数 …… afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); // add lyw DECLARE_MESSAGE_MAP() ……
消息机制是windows程序的典型运行机制,在MFC中有很多已经封装好了的消息,如WM_BTN**等。但是在有些特殊情况下我们需要自定义一些消息去完成一些我们所需要的功能,这时候MFC的向导不能帮助我们做到这一点。对此,我们可以通过添加相应的代码去完成这个功能。
BEGIN_MESSAGE_MAP(CTestDlg, CDialog) …… ON_REGISTERED_MESSAGE(WM_MyMessage, OnMyMessage) END_MESSAGE_MAP()
2. 在资源中添加要处理的消息的值,即在CTestDlg.h中添加 如下代码。 (因为很多MFC的消息是在WM_USER内的,所以这里用比WM_USER大的消息)LRESULT CTestDlg::OnMyMessage(WPARAM wParam, LPARAM lParam) { //MessageBox("recv msg success"); //添加自己的消息处理 …… return 0; }
SendMessage( WM_MyMessage, 0, 0);
static UINT WM_MyMessage = RegisterWindowMessage("myMessage");
3.测试消息时,如果要让多个应用程序都接收到这个消息,需要使用:
5. 实现自己的自定义消息处理:
1. 建立MFC工程,如基于对话框的应用程序,Test。
PostMessage(WM_MyMessage, 0, 0);
如果要定义系统唯一的消息让多个应用程序去处理,不同之处如下:
添加自定义消息操作如下:
2. 上面4步骤中的代码用如下代替:
6. 如果要发送一个自定义的消息,需要使用代码
::SendMessage(HWND_BROADCAST, WM_MyMessage, 0, 0);
3. 声明消息处理函数,在CTestDlg.h中添加如下代码:
二、实现方法:
BEGIN_MESSAGE_MAP(CTestDlg, CDialog) …… ON_MESSAGE(WM_MyMessage, OnMyMessage) END_MESSAGE_MAP()
#define WM_MyMessage (WM_USER+100)
1. 把上面2步骤中的宏 #define WM_MyMessage (WM_USER+100) 使用如下代码代替:或者
4. 添加消息映射处理,在CTestDlg.cpp中人找到如下部分添加代码:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/cjj/6113.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
只需要在调用Ctrl+B编译后
时间:2021-01-13
-
OpenGL超级宝典visual studio
时间:2021-01-04
-
Directx11 教程(2) 基本的wi
时间:2021-01-04
-
LeetCode11ContainerWithMostWate
时间:2021-01-04
-
C语言简单IT之家速成
时间:2020-12-27
-
三分钟了解Activity工作流
时间:2020-12-27
-
编译器是如何实现32位整型
时间:2020-12-27
-
C++中lower_bound函数和upper
时间:2020-12-27
热门文章
-
LeetCode11ContainerWithMostWater(最大水容器)
时间:2021-01-04
-
C语言简单编程速成
时间:2020-12-23
-
都2020了,这五个最佳C++的IDE你还没用过?
时间:2020-12-23
-
C语言源程序文件的后缀是什么?
时间:2020-12-23
-
OpenGL超级宝典visual studio 2013开发环境配置
时间:2021-01-04
-
编译器是如何实现32位整型的常量整数除
时间:2020-12-27
-
libusbwin32学习笔记(二)
时间:2020-12-27
-
C语言简单IT之家速成
时间:2020-12-27
-
C语言和Python语言有什么区别呢?
时间:2020-12-24
-
C++对象模型之RTTI的实现原理
时间:2020-12-23
